﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using CourseUtils;

namespace valueOfTheNearestKey
{
    class Program
    {
        static void takingKeyAndValue(char[] seps, string keyAndValue, out int keyFromFile, out double value)
        {
            string[] key = keyAndValue.Split(seps);                  // выделение подстрок с ключём и значением
         //   Console.WriteLine("{0}\t\t{1}", key[0], key[1]);  // промежуточная печать ключа и значения
            keyFromFile = int.Parse(key[0]);                    // преобразование строки с ключом в целый тип
            key[1] = key[1].Replace('.', ',');      // замена точки на запятую в строке, отвечающей за вещественное значение
            value = double.Parse(key[1]);    // получение значения в виде вещественного числа с плавающей точкой
            return;
        }



        static void Main(string[] args)
        {
            int readingNumber = 25;           
 //           readingNumber = CourseUtils.IOHelpers.ReadIntFromConsole("Введите число от 0 до 360");
            readingNumber = CourseUtils.IOHelpers.ReadIntFromConsole("Введите число от 0 до 360", 0, 360);

            int eps = 1;
            int del = 1;
            bool end = false;
            int k = 0;
            double val = 0.0D;
            string path = "C:\\DAD\\AndriiN\\NetElementaryMachJun2015\\AndriiN\\dictionary.txt";

            while (end == false)
            {              
                StreamReader f = File.OpenText(path);
                string line = null;
                line = f.ReadLine();

                while (line != null)
                {
                    char[] seps = { '\t', ' ', '-' };         // приемлемые разделители: табуляция, пробел, дефис
                    takingKeyAndValue(seps, line, out k, out val); // получили ключ и значение в виде чисел
                    line = f.ReadLine();
                    int temp = Math.Abs(readingNumber - k);
                    if (temp <= eps)
                    {
                        if (temp == 0)
                        {
                            Console.WriteLine("\nВведенное число {0}, полностью совпадает с ключом {1}", readingNumber, k);

                        }
                        else    Console.WriteLine("\nВведенному числу {0}, соответствует ключ {1}, с точностью {2}", readingNumber, k, eps);
                        Console.WriteLine("\nЗначение полученное из файла по ключу равно {0}", val);
                        end = true;
                    }        
                        
                  }
                eps += del;
              }
            Console.ReadKey();
        }
    }
}


